package cn.leaf.template;

/**
 *
 * description: 模拟银行业务模板
 *
 * @author twinkle leaf
 * @version v1.0.0
 * @since 2021-07-15 23:42:09
 *
*/
public abstract class AbstractBankHandler {

    public final void preHandler() {
        getNum();
        lineUp();
        handler();
        evaluate();
        hook();
    }

    /**
     * 取号
     */
    public void getNum() {
        System.out.println("取号");
    }

    /**
     * 排队
     */
    public void lineUp() {
        System.out.println("排队");
    }

    /**
     * 处理业务
     */
    public abstract void handler();

    /**
     * 评价
     */
    public abstract void evaluate();

    /**
     * 提供一个钩子方法
     */
    public void hook() {
    }
}
